package com.project.mapper;

import com.project.bean.EmployeeBean;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;

import java.util.List;

@Mapper
public interface IEmployeeMapper {
    /**
     * 添加员工
     * @param employeeBean 员工对象
     */
    @Insert("insert into t_employee(e_name,e_birthday,e_inductionDate,e_specialty,e_state,e_money,e_phone,e_image)" +
            "values(#{employeeName},#{birthday},#{inductionDate},#{specialty},#{state},#{money},#{phone},#{image})")
    public void addEmployee(EmployeeBean employeeBean);

    /**
     * 根据id修改员工状态
     * @param EmployeeId 员工id
     * @param state 状态
     */
    @Update("update t_employee set e_state =#{state} where pk_emId =#{EmployeeId}")
    public void updateState(@Param("EmployeeId") int EmployeeId, @Param("state") String state);

    /**
     * 根据id修改项目完成时间
     * @param EmployeeId 员工id
     * @param completeDate 项目完成时间
     */
    @Update("update t_progress set pp_completeDate=#{completeDate} where fk_emId=#{EmployeeId} and pp_completeDate='未完成'")
    public void updateCompleteDate(@Param("EmployeeId") int EmployeeId,
                                   @Param("completeDate") String completeDate);

    /**
     * 根据员工id修改员工信息
     * @param EmployeeId 员工id
     * @param phone 电话
     * @param money 工资
     */
    @Update("update t_employee set e_money=#{money},e_phone=#{phone} where pk_emId=#{EmployeeId}")
    public void updateEmployee(@Param("EmployeeId") int EmployeeId,
                               @Param("phone") String phone,@Param("money") int money);

    /**
     * 按id查询员工详情信息
     * @param EmployeeId 员工id
     * @return 员工对象
     */
    public EmployeeBean findById(int EmployeeId);

    /**
     * 根据id和项目日期是否完成，员工正在进行的项目
     * @param emId 员工编号
     * @return 员工对象
     */
    public EmployeeBean findByIdDate(int emId);

    /**
     * 动态分页查询员工
     * @param employeeName 员工姓名
     * @param specialty 专长
     * @param state 状态
     * @param rules 排序规则
     * @return 分页对象
     */
    public List<EmployeeBean> cutByItem(@Param("name") String employeeName, @Param("specialty") String specialty,
                                        @Param("state") String state, @Param("rules") String rules);

    /**
     * 动态条件查询，不在指定项目的员工
     * 项目编号为固定条件，员工姓名和专长为动态条件
     * @param projectId
     * @param name
     * @param specialty
     * @return
     */
    public List<EmployeeBean> findNoProject(
            @Param("id") int projectId,@Param("name") String name,
            @Param("specialty") String specialty);
}
